package br.unicamp.ft.sahp.controller.servico.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import br.unicamp.ft.sahp.controller.servico.QuestaoService;
import br.unicamp.ft.sahp.model.dao.QuestaoDAO;
import br.unicamp.ft.sahp.model.entidades.Questao;
import br.unicamp.ft.sahp.model.exception.QuestaoNaoEncontradaException;

@Service("questaoService")
@Transactional
public class QuestaoServiceImpl implements QuestaoService {

	@Autowired
	private QuestaoDAO questaoDAO;

	public List<Questao> buscarQuestoesPeloTexto(String textoQuestao)
			throws QuestaoNaoEncontradaException {
		
		return questaoDAO.findQuestoesByDescricao(textoQuestao);
	}
	
	public void cadastrarQuestao(String textoQuestao) {
		Questao questao = new Questao();
		questao.setDescricaoQuestao(textoQuestao);
		questaoDAO.create(questao);
	}
	
	public void atualizarQuestao(Long codigoQuestao, String textoQuestao) {
		Questao questao = questaoDAO.findByPrimaryKey(codigoQuestao);
		questao.setDescricaoQuestao(textoQuestao);
		questaoDAO.update(questao);
	}
	
	public List<Questao> buscarTodasQuestoes() throws QuestaoNaoEncontradaException {
		return questaoDAO.findAllQuestoes();
	}
	
	//@Transactional (isolation = Isolation.READ_UNCOMMITTED, readOnly = true, propagation = Propagation.NEVER)
	public Questao buscarQuestoesPeloCodigo(Long codigoQuestao) {
		return questaoDAO.findByPrimaryKey(codigoQuestao);
	}
	
	public void excluirQuestao(Long codigoQuestao) {
		Questao questao = questaoDAO.findByPrimaryKey(codigoQuestao);
		questaoDAO.remove(questao);
	}
}
